home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / cat3 / complib / sormlq.z / sormlq
Encoding:
Text File  |  1998-10-30  |  3.6 KB  |  133 lines

  1.  
  2.  
  3.  
  4. SSSSOOOORRRRMMMMLLLLQQQQ((((3333FFFF))))                                                          SSSSOOOORRRRMMMMLLLLQQQQ((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      SORMLQ - overwrite the general real M-by-N matrix C with   SIDE = 'L'
  10.      SIDE = 'R' TRANS = 'N'
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE SORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK,
  14.                         LWORK, INFO )
  15.  
  16.          CHARACTER      SIDE, TRANS
  17.  
  18.          INTEGER        INFO, K, LDA, LDC, LWORK, M, N
  19.  
  20.          REAL           A( LDA, * ), C( LDC, * ), TAU( * ), WORK( LWORK )
  21.  
  22. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  23.      SORMLQ overwrites the general real M-by-N matrix C with TRANS = 'T':
  24.      Q**T * C       C * Q**T
  25.  
  26.      where Q is a real orthogonal matrix defined as the product of k
  27.      elementary reflectors
  28.  
  29.            Q = H(k) . . . H(2) H(1)
  30.  
  31.      as returned by SGELQF. Q is of order M if SIDE = 'L' and of order N if
  32.      SIDE = 'R'.
  33.  
  34.  
  35. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  36.      SIDE    (input) CHARACTER*1
  37.              = 'L': apply Q or Q**T from the Left;
  38.              = 'R': apply Q or Q**T from the Right.
  39.  
  40.      TRANS   (input) CHARACTER*1
  41.              = 'N':  No transpose, apply Q;
  42.              = 'T':  Transpose, apply Q**T.
  43.  
  44.      M       (input) INTEGER
  45.              The number of rows of the matrix C. M >= 0.
  46.  
  47.      N       (input) INTEGER
  48.              The number of columns of the matrix C. N >= 0.
  49.  
  50.      K       (input) INTEGER
  51.              The number of elementary reflectors whose product defines the
  52.              matrix Q.  If SIDE = 'L', M >= K >= 0; if SIDE = 'R', N >= K >=
  53.              0.
  54.  
  55.      A       (input) REAL array, dimension
  56.              (LDA,M) if SIDE = 'L', (LDA,N) if SIDE = 'R' The i-th row must
  57.              contain the vector which defines the elementary reflector H(i),
  58.              for i = 1,2,...,k, as returned by SGELQF in the first k rows of
  59.              its array argument A.  A is modified by the routine but restored
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. SSSSOOOORRRRMMMMLLLLQQQQ((((3333FFFF))))                                                          SSSSOOOORRRRMMMMLLLLQQQQ((((3333FFFF))))
  71.  
  72.  
  73.  
  74.              on exit.
  75.  
  76.      LDA     (input) INTEGER
  77.              The leading dimension of the array A. LDA >= max(1,K).
  78.  
  79.      TAU     (input) REAL array, dimension (K)
  80.              TAU(i) must contain the scalar factor of the elementary reflector
  81.              H(i), as returned by SGELQF.
  82.  
  83.      C       (input/output) REAL array, dimension (LDC,N)
  84.              On entry, the M-by-N matrix C.  On exit, C is overwritten by Q*C
  85.              or Q**T*C or C*Q**T or C*Q.
  86.  
  87.      LDC     (input) INTEGER
  88.              The leading dimension of the array C. LDC >= max(1,M).
  89.  
  90.      WORK    (workspace/output) REAL array, dimension (LWORK)
  91.              On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  92.  
  93.      LWORK   (input) INTEGER
  94.              The dimension of the array WORK.  If SIDE = 'L', LWORK >=
  95.              max(1,N); if SIDE = 'R', LWORK >= max(1,M).  For optimum
  96.              performance LWORK >= N*NB if SIDE = 'L', and LWORK >= M*NB if
  97.              SIDE = 'R', where NB is the optimal blocksize.
  98.  
  99.      INFO    (output) INTEGER
  100.              = 0:  successful exit
  101.              < 0:  if INFO = -i, the i-th argument had an illegal value
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.